In general, interactive computers involve structures which participate in a so-called "conversation" with the user. Essentially, the user and the computer can interact with each other in a fashion that is particularly effective for certain applications as in the case of computer graphics.
In the operation of an interactive computer, the user is be provided with a set of commands for controlling the program of operation. Such a system is disclosed in U.S. Pat. No. 3,534,338, issued Oct. 13, 1970, to C. Christensen et al. The commands control the individual processes that are activated and also contain the data that is to be employed in the processes. In general, it is advisable to precisely define the range of commands which are acceptable to the computer and to define the form or syntax of each command. In that manner, the user has an established list of commands to which the computer will respond. Thus, communication with the computer is by the mechanism of a command language. For example, in the use of an interactive computer graphics system, the user addresses the computer with specific commands and the computer responds with displayed pictures and printed messages. Thus, a "conversation" is conducted.
Command languages tend to be quite different from the procedural languages used for writing computer programs, e.g. see Column 27 of the above-referenced Christensen patent. They differ both in appearance and implementation. Generally, command languages are simpler and do not define the type of commands that are compiled as to create a stored program. Rather, in the operation of an interactive computer, a current command is interpreted by the system to provide a definition (normally in the form of an instruction) then the current command is discarded. In the past, structures have been variously embodied for interpreting the individual commands of a command language. Such systems are treated in detail in a book, Principles of Interactive Computer Graphics, by W. N. Newman and R. F. Sproull, published by McGraw-Hill, Inc. in 1973.
Recapitulating to some extent, in the operation of an interactive computer, when a program containing commands is interpretively executed, each name that is encountered must be defined. That action involves resort to a dictionary. However, such commands as "compute" or "display" may involve a multitude of specific possibilities with the result that traditional command languages have necessitated a large number of specific commands involving such words as, for example, "compute hypotenuse of lines L1 and L2". The result has been to complicate the command language, increasing the difficulty of its use. In general, the present invention incorporates a command language system which allows generic programs to be written using such ambiguous commands as "compute" or "display", the ambiguity of which is automatically resolved and the commands properly executed in a context appropriate to the particular application. The ambiguity is resolved by a memory stack containing definitions and operated to provide the definitions in a predetermined sequence which is associated with the program.
In the operation of the present system, when a program containing commands is interpretively executed, each name (identification of a command or part of a command) that is encountered is looked up in the dictionaries on the dictionary stack by starting at the top of the stack and searching each dictionary encountered for the definition desired. For a detailed explanation, of such a well known operation, see the book Interactive Computer Graphics, 1978, by Wolfgang K. Giloi, pages 52-57. In accordance herewith, the search continues until the definition for the name is located or the bottom of the stack is reached. The structure allows different dictionaries to carry the same name and resolves the potential ambiguity by giving dictionaries a priority defined by position in the stack. The dictionary defining the name of interest that is first encountered (closest to the top) takes priority and is used in response to the name in question. If the stack does not contain a definition of the name, the structure senses the bottom of the stack and implements appropriate control.